iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0

https://ithelp.ithome.com.tw/upload/images/20230909/20151483LMPMA98m9C.png
Figure 1 : EKS-Blueprints
Figure 1: 說明如何把AWS上面的服務跟資源掛進 EKS 裡ㄅ面

What is EKS-Blueprint?

這邊就要來介紹部署 AWS EKS 的時候會使用到的工具,部署 AWS EKS 其實有很多種方式,例如:一開始剛接觸AWS 的人,會 manual to create service by AWS console 按一按也是可以建立服務的

也有不少高手也是使用 AWS CLI 來建立服務,甚至可以 用python Boto3 來建立服務,相信這個是多數 的Python 重度使用者的方式 ,但是懶還要更懶,因為很多服務都需要互相的串接跟建立,而 K8s 裡面有很多東西,所以就出現了 Blueprints 這個工具來協助部屬EKS的服務,因為可以減少一些麻煩的設定。

What is EKS-Blueprint work for?

AWS Load Balancer Controller、Prometheus, Karpenter 這些東西對於 k8s 來講是一些很基本的套件跟工具,安裝上極為簡單及便利,但是對於 AWS 而言,這些東西跟一般 on-permise 的安裝方式有很大的差異, 因為有很多東西跟設定需要因為 AWS 系統的關係,所以要另外設定跟安裝,所以有了 EKS-blueprint,所以就讓部屬的門檻降低了

How to build AWS EKS and relative package through EKS-Blueprint?

EKS-Blueprint 其實也有 AWS cloudformation 版本,還有我這邊會介紹的 Terraform 版本,Terraform也可以直接部署 eks 跟 aws 上面的資源,但是這些只是開 aws resource,但並不會把 aws resource 整進去 EKS 裏面。這邊有從官方網站的範例直接來說明

可以參考裡面的 example :

https://github.com/aws-ia/terraform-aws-eks-blueprints/tree/main/examples

部署的方式跟一般的 Terraform 的用法其實一樣,並沒有比較特別的,但是要特別注意的是要建立 eks 前先建立好 vpc跟 subnet [NOTE 1]

terraform init
terraform apply -target module.vpc
terraform apply -target module.eks
terraform apply

部署的部分大致上就是跟 terraform 部署的方式一樣,但是 Module 的部分需要另外指定 resource 是 eks-blueprint 提供的即可

################################################################################
# Cluster
################################################################################

module "eks" {
  source  = "terraform-aws-modules/eks/aws"
  version = "~> 19.16"

  cluster_name                   = local.name
  cluster_version                = "1.27"
  cluster_endpoint_public_access = true

  vpc_id     = module.vpc.vpc_id
  subnet_ids = module.vpc.private_subnets

  eks_managed_node_groups = {
    core_node_group = {
      instance_types = ["m5.large"]

      ami_type = "BOTTLEROCKET_x86_64"
      platform = "bottlerocket"

      min_size     = 3
      max_size     = 3
      desired_size = 3
    }
  }

  tags = local.tags
}

首先做 Terraform init ,這邊簡單就會把你在terraform 用到的 module packages 安裝到本機

Note:

  1. 這邊要特別注意的是這些東西要先算清楚會需要多少IP,因為vpc 如果 ClusterIP 不夠的時候,就會在pod 啟動時出現要無法找尋到 IP,尤其是到後面有使用 Karpenter 做 node scale up 的話更是很快的會使用大量的IP

Reference

https://aws-ia.github.io/terraform-aws-eks-blueprints/v4.32.1/
https://github.com/aws-ia/terraform-aws-eks-blueprints/tree/main/examples


上一篇
{Day 6 : Why using EKS - processing & memory issue}
下一篇
{Day 8: Some tips to save the cost in EKS }
系列文
Don't be a Machine Learning Engineer30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言